package com.advice;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class MyAdvice {
    @Pointcut("execution(public * com.service.ResourceService.saveUrl(..))")
    public void pt() {}

    //@TODO：环绕通知，去除url和password中的空格
    @Around("pt()")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("环绕通知执行");
        //TODO：获取请求参数 --> 初始参数中的密码是前后有空格的，方法目的：让执行方式时，显示没有空格
        Object[] args = joinPoint.getArgs();
        //TODO：去除密码中的空格，
        for (int i = 0; i < args.length; i++) {
            //判断参数是否为字符串
            if (args[i].getClass().equals(String.class)) {
                //去除空格
                args[i] = args[i].toString().trim();
            }
        }
        //TODO：执行方法，传递的参数是去掉空格后的参数
        Object proceed = joinPoint.proceed(args);
        return proceed;
    }
}
